package com.xinqi.modules.databank.v2.service.common;

import com.xinqi.common.base.response.PageInfo;
import com.xinqi.common.core.enums.StudentSwitchType;
import com.xinqi.modules.databank.dto.req.CourseResourceDataUpdateDTO;
import com.xinqi.modules.databank.dto.req.CourseResourceUpdateDTO;
import com.xinqi.modules.databank.dto.req.DownloadDTO;
import com.xinqi.modules.databank.dto.req.ResourceBaseQueryDTO;
import com.xinqi.modules.databank.dto.rsp.CourseResourceBaseResultDTO;
import com.xinqi.modules.databank.dto.rsp.ResourceResponseDTO;

import java.util.List;

/**
 * 资料库公共方法
 * @author dzy
 */
public interface CourseResourceBaseService {

    /**
     * 老师端查询未发布互动课件
     * @Author dzy
     * @Date 2023/07/14
     * @Return
     * @Exception
     */
    PageInfo<CourseResourceBaseResultDTO>  teacherUnreleasePage(ResourceBaseQueryDTO query);

    /**
     * 老师端查询发布互动课件
     * @Author dzy
     * @Date 15:02 2023/3/16
     * @Return
     * @Exception
     */
    PageInfo<CourseResourceBaseResultDTO>  teacherReleasePage(ResourceBaseQueryDTO query);

    /**
     * 学生查询互动课件
     * @Author dzy
     * @Date 2023/07/14
     * @Description
     * @Return
     * @Exception
     */
    PageInfo<CourseResourceBaseResultDTO>  studentPage(ResourceBaseQueryDTO query);

    /**
     * 记录学生端下载资料库文件次数
     * @param downloadDto 下载实体集合
     * @return  List<String> 返回地址集合
     */
    List<String> getDownPaths(DownloadDTO downloadDto);

    /**
     * 获取资料库数据
     * @author dzy
     */
    CourseResourceBaseResultDTO findById(Long id);

    /**
     * 修改资料信息
     * @author dzy
     */
    Boolean update(CourseResourceUpdateDTO dto);

    /**
     * 单个删除资料库数据
     * @author dzy
     */
    boolean deletedById(Long id);

    /**
     * 批量删除资料库数据
     * @author dzy
     */
    boolean deletedByIds(List<Long> ids);


    /**
     * 定时发布资料库
     * @author dzy
     */
    boolean scheduleResourceCourse();

    /**
     * 加入班级同步资料库数据
     * @author dzy
     */
    boolean joinClassSyncResource(Long classId, Long studentId);

}
